
#include "StdAfx.h"

#ifndef SDOGEOMETRY_ORACLE
# include "sdogeometry.h"
#endif


/*****************************************************************/
//  generated method implementations for the SDO_POINT_TYPE object type.
/*****************************************************************/

oracle::occi::Number sdo_point_type::getx() const
{
  return x;
}

void sdo_point_type::setx(const oracle::occi::Number &value)
{
  x = value;
}

oracle::occi::Number sdo_point_type::gety() const
{
  return y;
}

void sdo_point_type::sety(const oracle::occi::Number &value)
{
  y = value;
}

oracle::occi::Number sdo_point_type::getz() const
{
  return z;
}

void sdo_point_type::setz(const oracle::occi::Number &value)
{
  z = value;
}

void *sdo_point_type::operator new(size_t size)
{
  return oracle::occi::PObject::operator new(size);
}

void *sdo_point_type::operator new(size_t size, const oracle::occi::Connection * sess,
  const OCCI_STD_NAMESPACE::string& table)
{
  return oracle::occi::PObject::operator new(size, sess, table, 
            (char *) "MDSYS.SDO_POINT_TYPE");
}

void *sdo_point_type::operator new(size_t size, void *ctxOCCI_)
{
 return oracle::occi::PObject::operator new(size, ctxOCCI_);
}

void *sdo_point_type::operator new(size_t size,
    const oracle::occi::Connection *sess,
    const OCCI_STD_NAMESPACE::string &tableName, 
    const OCCI_STD_NAMESPACE::string &typeName,
    const OCCI_STD_NAMESPACE::string &tableSchema, 
    const OCCI_STD_NAMESPACE::string &typeSchema)
{
  return oracle::occi::PObject::operator new(size, sess, tableName,
        typeName, tableSchema, typeSchema);
}

OCCI_STD_NAMESPACE::string sdo_point_type::getSQLTypeName() const
{
  return OCCI_STD_NAMESPACE::string("MDSYS.SDO_POINT_TYPE");
}

void sdo_point_type::getSQLTypeName(oracle::occi::Environment *env, void **schemaName,
    unsigned int &schemaNameLen, void **typeName, unsigned int &typeNameLen) const
{
  PObject::getSQLTypeName(env, &sdo_point_type::readSQL, schemaName,
        schemaNameLen, typeName, typeNameLen);
}

sdo_point_type::sdo_point_type()
{
}

void *sdo_point_type::readSQL(void *ctxOCCI_)
{
  sdo_point_type *objOCCI_ = new(ctxOCCI_) sdo_point_type(ctxOCCI_);
  oracle::occi::AnyData streamOCCI_(ctxOCCI_);

  try
  {
    if (streamOCCI_.isNull())
      objOCCI_->setNull();
    else
      objOCCI_->readSQL(streamOCCI_);
  }
  catch (oracle::occi::SQLException& excep)
  {
    delete objOCCI_;
    excep.setErrorCtx(ctxOCCI_);
    return (void *)NULL;
  }
  return (void *)objOCCI_;
}

void sdo_point_type::readSQL(oracle::occi::AnyData& streamOCCI_)
{
   x = streamOCCI_.getNumber();
   y = streamOCCI_.getNumber();
   z = streamOCCI_.getNumber();
}

void sdo_point_type::writeSQL(void *objectOCCI_, void *ctxOCCI_)
{
  sdo_point_type *objOCCI_ = (sdo_point_type *) objectOCCI_;
  oracle::occi::AnyData streamOCCI_(ctxOCCI_);

  try
  {
    if (objOCCI_->isNull())
      streamOCCI_.setNull();
    else
      objOCCI_->writeSQL(streamOCCI_);
  }
  catch (oracle::occi::SQLException& excep)
  {
    excep.setErrorCtx(ctxOCCI_);
  }
  return;
}

void sdo_point_type::writeSQL(oracle::occi::AnyData& streamOCCI_)
{
   streamOCCI_.setNumber(x);
   streamOCCI_.setNumber(y);
   streamOCCI_.setNumber(z);
}

sdo_point_type::~sdo_point_type()
{
  int i;
}

/*****************************************************************/
//  generated method implementations for the SDO_GEOMETRY object type.
/*****************************************************************/

oracle::occi::Number SDO_GEOMETRY::getsdo_gtype() const
{
  return sdo_gtype;
}

void SDO_GEOMETRY::setsdo_gtype(const oracle::occi::Number &value)
{
  sdo_gtype = value;
}

oracle::occi::Number SDO_GEOMETRY::getsdo_srid() const
{
  return sdo_srid;
}

void SDO_GEOMETRY::setsdo_srid(const oracle::occi::Number &value)
{
  sdo_srid = value;
}

sdo_point_type * SDO_GEOMETRY::getsdo_point() const
{
  return sdo_point;
}

void SDO_GEOMETRY::setsdo_point(sdo_point_type * value)
{
  sdo_point = value;
}

OCCI_STD_NAMESPACE::vector< oracle::occi::Number >& SDO_GEOMETRY::getsdo_elem_info() 
{
  return sdo_elem_info;
}

const OCCI_STD_NAMESPACE::vector< oracle::occi::Number >& SDO_GEOMETRY::getsdo_elem_info() const
{
  return sdo_elem_info;
}

void SDO_GEOMETRY::setsdo_elem_info(const OCCI_STD_NAMESPACE::vector< oracle::occi::Number > &value)
{
  sdo_elem_info = value;
}

OCCI_STD_NAMESPACE::vector< oracle::occi::Number >& SDO_GEOMETRY::getsdo_ordinates() 
{
  return sdo_ordinates;
}

const OCCI_STD_NAMESPACE::vector< oracle::occi::Number >& SDO_GEOMETRY::getsdo_ordinates() const
{
  return sdo_ordinates;
}

void SDO_GEOMETRY::setsdo_ordinates(const OCCI_STD_NAMESPACE::vector< oracle::occi::Number > &value)
{
  sdo_ordinates = value;
}

void *SDO_GEOMETRY::operator new(size_t size)
{
  return oracle::occi::PObject::operator new(size);
}

void *SDO_GEOMETRY::operator new(size_t size, const oracle::occi::Connection * sess,
  const OCCI_STD_NAMESPACE::string& table)
{
  return oracle::occi::PObject::operator new(size, sess, table, 
            (char *) "MDSYS.SDO_GEOMETRY");
}

void *SDO_GEOMETRY::operator new(size_t size, void *ctxOCCI_)
{
 return oracle::occi::PObject::operator new(size, ctxOCCI_);
}

void *SDO_GEOMETRY::operator new(size_t size,
    const oracle::occi::Connection *sess,
    const OCCI_STD_NAMESPACE::string &tableName, 
    const OCCI_STD_NAMESPACE::string &typeName,
    const OCCI_STD_NAMESPACE::string &tableSchema, 
    const OCCI_STD_NAMESPACE::string &typeSchema)
{
  return oracle::occi::PObject::operator new(size, sess, tableName,
        typeName, tableSchema, typeSchema);
}

OCCI_STD_NAMESPACE::string SDO_GEOMETRY::getSQLTypeName() const
{
  return OCCI_STD_NAMESPACE::string("MDSYS.SDO_GEOMETRY");
}

void SDO_GEOMETRY::getSQLTypeName(oracle::occi::Environment *env, void **schemaName,
    unsigned int &schemaNameLen, void **typeName, unsigned int &typeNameLen) const
{
  PObject::getSQLTypeName(env, &SDO_GEOMETRY::readSQL, schemaName,
        schemaNameLen, typeName, typeNameLen);
}

SDO_GEOMETRY::SDO_GEOMETRY()
{
   sdo_point = (sdo_point_type *) 0;
}

void *SDO_GEOMETRY::readSQL(void *ctxOCCI_)
{
  SDO_GEOMETRY *objOCCI_ = new(ctxOCCI_) SDO_GEOMETRY(ctxOCCI_);
  oracle::occi::AnyData streamOCCI_(ctxOCCI_);

  try
  {
    if (streamOCCI_.isNull())
      objOCCI_->setNull();
    else
      objOCCI_->readSQL(streamOCCI_);
  }
  catch (oracle::occi::SQLException& excep)
  {
    delete objOCCI_;
    excep.setErrorCtx(ctxOCCI_);
    return (void *)NULL;
  }
  return (void *)objOCCI_;
}

void SDO_GEOMETRY::readSQL(oracle::occi::AnyData& streamOCCI_)
{
   sdo_gtype = streamOCCI_.getNumber();
   sdo_srid = streamOCCI_.getNumber();
   sdo_point = (sdo_point_type *) streamOCCI_.getObject(&sdo_point_type::readSQL);
   oracle::occi::getVector(streamOCCI_, sdo_elem_info);
   oracle::occi::getVector(streamOCCI_, sdo_ordinates);
}

void SDO_GEOMETRY::writeSQL(void *objectOCCI_, void *ctxOCCI_)
{
  SDO_GEOMETRY *objOCCI_ = (SDO_GEOMETRY *) objectOCCI_;
  oracle::occi::AnyData streamOCCI_(ctxOCCI_);

  try
  {
    if (objOCCI_->isNull())
      streamOCCI_.setNull();
    else
      objOCCI_->writeSQL(streamOCCI_);
  }
  catch (oracle::occi::SQLException& excep)
  {
    excep.setErrorCtx(ctxOCCI_);
  }
  return;
}

void SDO_GEOMETRY::writeSQL(oracle::occi::AnyData& streamOCCI_)
{
   streamOCCI_.setNumber(sdo_gtype);
   streamOCCI_.setNumber(sdo_srid);
   streamOCCI_.setObject(sdo_point);
   oracle::occi::setVector(streamOCCI_, sdo_elem_info);
   oracle::occi::setVector(streamOCCI_, sdo_ordinates);
}

SDO_GEOMETRY::~SDO_GEOMETRY()
{
  int i;
  delete sdo_point;
}
